import axios from "axios";
import nProgress from "nprogress";
import "nprogress/nprogress.css"

/* 
  - 在我们的项目的环境里有一个process.env对象,这个对象就是当前的环境变量对象 
  - 这个对象中默认有一个NODE_EVN的属性,代表的是当前的环境是development还是production
  - 我希望也想在这个环境变量对象中去添加自己的属性?
    * 在根目录创建一个.env文件,内部配置属性,属性格式要求 VUE_APP_XXX=XXX
    * 但是在.env文件中配置的属性,在任意环境中都会被添加到process.env对象中
  - 怎么让不同环境给process.env添加不同的值呢?
    * 创建.env.development文件，在这个文件中申明的变量和值 只能在开发环境下的process.env对象中获取
    * 创建.env.production文件,在这个文件中申明的变量和值 只能在生产环境下的process.env对象中获取
*/
// console.log(process.env);

// 创建axios实例
const request = axios.create({
    baseURL: process.env.VUE_APP_API + "/api",
    timeout: 5000,
})

//创建请求拦截器
request.interceptors.request.use((config) => {
    nProgress.start()
    return config
})


//创建相应拦截器
request.interceptors.response.use((response) => {
    //将响应的code和响应信息结构出来
    nProgress.done()
    const {
        code,
        message
    } = response.data
    // 如果响应码code===200,则成功相应到我们想要的数据，直接返回过滤后的数据
    if (code === 200) {
        return response.data.data
    }
    // 如果响应码code不为200，则不是我们想要拿的数据，返回失败的promise
    return Promise.reject({
        message: message
    });
}, (e) => {
    nProgress.done()
    //如果响应失败，则返回失败的promise,值为错误信息
    return Promise.reject(e)
})


//暴露request
export default request